package com.xiyou.week03.tree;

/**
 * 50. Pow(x, n)
 * 实现 pow(x, n) ，即计算 x 的 n 次幂函数（即，xn ）。
 *
 * @ClassName：MyPow
 * @Author：西柚
 * @Date：2022/1/13 12:00 上午
 * @Versiion：1.0
 */
public class MyPow {

    /**
     * 输入：x = 2.00000, n = 10
     * 输出：1024.00000
     *
     * @param x
     * @param n
     * @return
     */
    public static double myPow(double x, int n) {
        if (n == 0) {
            return 1;
        }
        if (n == -(1L << 31)) {
            return 1.0 / (myPow(x, -(n + 1)) * x);
        }
        if (n < 0) {
            return 1.0 / myPow(x, -n);
        }

        double temp = myPow(x, n / 2);
        double ans = temp * temp;
        if (n % 2 == 1) {
            ans *= x;
        }
        return ans;
    }

    public static void main(String[] args) {
        double x = 2.00000;
        int n = 10;

        System.out.println(myPow(x, n));
    }
}
